#pragma once


#include <stdint.h>
#include "Common/EventDefine.h"
#include "Duplicate/IDuplicate.h"


struct ICond 
{
	virtual ~ICond(){}
	virtual int8_t getCondType() = 0;
	virtual bool init(IDuplicate *pDuplicate, const VEC_INT32 *pCond,const string &strSubCond) = 0;
	virtual void uninit() = 0;
	virtual void condUpdate() = 0;
	virtual bool finishCond() = 0;
	virtual int32_t result() = 0;
	virtual int32_t limitSec() { return 0; };
	virtual uint32_t transAreeId() { return 0; };
	virtual uint32_t towerMonsId() { return 0; }
	virtual void onMonsHpUpdate(int32_t hp){}; 
	virtual void onMonDie(uint32_t monsId, uint32_t num, int32_t leftNum) {};
	virtual void onCreatrueDie(uint64_t cid, int8_t creatureKind){};
	virtual void onPlayerLeave(uint64_t cid){};
	virtual void onTransNum(uint32_t monsId, uint32_t num, int8_t parentType){};
	virtual void setContiTime(int32_t sec){};
	virtual int32_t winCamp(){ return 0; };
	virtual void getMonsType(SET_INT8 &setType){};
	virtual void getMonsNum(MAP_UINT32_INT32 &mapMonsDieNum, MAP_UINT32_INT32 &mapMonsTotalNum){}
	virtual int32_t getTransNum(){ return 0; }
};